package org.teststack.Api;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class CookieManager {
    public static Map<String, String> cookies = new HashMap<>();

    // 创建一个新的Cookie键值对，但不直接存储到全局cookies中
    public static Map<String, String> createCookieMap(String cookieName, String cookieValue) {
        Map<String, String> cookieMap = new HashMap<>();
        cookieMap.put(cookieName, cookieValue);
        return cookieMap;
    }

    // 获取当前存储的所有Cookie（现在返回正确的类型）
    public static Map<String, String> getCookies() {
        // 直接返回cookies的不可修改视图
        return Collections.unmodifiableMap(cookies);
    }

    // 注意：这里不需要导入Collections类，因为Map接口已经包含了unmodifiableMap方法

    // 设置单个Cookie到全局cookies中
    public static void setCookie(String cookieName, String cookieValue) {
        cookies.put(cookieName, cookieValue);
    }

    // 从登录响应或其他来源更新全局cookies
    public static void updateCookiesFromLoginResponse(Map<String, String> newCookies) {
        cookies.clear(); // 清除旧cookies

        cookies.putAll(newCookies); // 添加新cookies
    }

    // 辅助方法：将内部cookies转换为HTTP请求头中Cookie的格式
    public static String getCookieHeader() {
        StringBuilder cookieHeader = new StringBuilder();
        for (Map.Entry<String, String> entry : cookies.entrySet()) {
            if (cookieHeader.length() > 0) {
                cookieHeader.append(";");
            }
            cookieHeader.append(entry.getKey()).append("=").append(entry.getValue());
        }
        return cookieHeader.toString();
    }

    // 使用示例
//    public static void main(String[] args) {
//        // 假设从登录响应中获得了新的Cookie
//            Map<String, String> loginResponseCookies = createCookieMap("cookieName", "cookieValue"); // 更正了引号
//
//        // 更新全局cookies
//        updateCookiesFromLoginResponse(loginResponseCookies);
//
//        // 打印当前存储的Cookie
//        System.out.println("Stored Cookies: " + getCookies());
//
//        // 假设需要构建一个HTTP请求，并添加Cookie头部
//        String cookieHeader = getCookieHeader();
//        System.out.println("Cookie Header: " + cookieHeader);
//    }
}







